package br.edu.ufabc.lnc.peanho.util;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import java.nio.charset.Charset;

import java.util.Properties;

public class Configuration {

	private static final String PROPERTIES_FILE = "configuration/config.properties";

	
	/**
	 * Retorna um objeto {@link Properties} com os mapeamentos contidos no
	 * arquivo {@code configFilename}.
	 * 
	 * @param configFilename
	 *            nome do arquivo a ser carregado
	 * @return {@link Properties} com os mapeamentos ou nenhum mapeamento em
	 *         caso de erro
	 */
	public static Properties loadConfiguration() {
		Properties properties = new Properties();
		BufferedReader br = null;
		try {
			ClassLoader classLoader = Configuration.class.getClassLoader();
			InputStream is = classLoader.getResourceAsStream(PROPERTIES_FILE);
			br = new BufferedReader(new InputStreamReader(is, Charset
					.forName("UTF-8")));
			properties.load(br);
		} catch (FileNotFoundException fileNotFoundException) {
			// XXX debug
			System.err.println("Arquivo de configuração não encontrado");
			fileNotFoundException.printStackTrace();
		} catch (IOException ioException) {
			// XXX debug
			System.err.println("Erro de I/O ao carregar o arquivo");
			ioException.printStackTrace();
		}
		if (br != null) {
			try {
				br.close();
			} catch (IOException ioException) {
				// XXX debug
				System.err.println("Erro de I/O ao fechar a stream");
				ioException.printStackTrace();
			}
		}
		return properties;
	}
}
